//#region Document Ready
$(document).ready(function () {

    $("#tabela_usuario").jqGrid({
        datatype: function (postdata) {
           
            UsuarioController.carregarTabelaUsuario({
                postdata: postdata,
                success: function (response, textStatus, jqXHR) {
                  
                    $('#tabela_usuario')[0].addJSONData(response);
                }
            });
        },
        colNames: ['Id', 'Nome', 'Login', 'Email', 'Senha', 'Data de Cadastro', 'Tipo'],
        colModel: [
        { name: 'Id', index: 'usuario_id', align: 'left', width: 80, hidden: true, search: true },
        { name: 'Nome', index: 'usuario_nm_completo', align: 'left', width: 250, search: true },
        { name: 'Login', index: 'usuario_login', align: 'left', width: 200, search: false },
        { name: 'Email', index: 'usuario_email', align: 'left', width: 220, search: false },
        { name: 'Senha', index: 'usuario_senha', align: 'center', width: 150, hidden: true, search: false },
        { name: 'Data de Cadastro', index: 'usuario_dtcadastro', align: 'center', formatter: jsonDate, width: 120, search: false },
        { name: 'Tipo', index: 'tipousuario_id', align: 'left', width: 100, hidden: true, search: false },
        //        
        ],
        pager: '#tabela_usuario_paginacao',
        pginput: false,
        rowNum: 10,
        sortname: 'usuario_nm_completo',
        sortorder: 'asc',
        viewrecords: true,
        caption: 'Cadastro de Usuários',
        height: '100%',
        autowidth: true,
        shrinkToFit: false,
        onSelectRow: function (rowid, status) {
            fillForm(rowid, $(this).getRowData(rowid));
        }
    }).jqGrid('navGrid', '#tabela_usuario_paginacao', {
        search: false,
        edit: false,
        add: false,
        del: false
    }).jqGrid('filterToolbar', {
        searchOnEnter: false
    });

    $("#btn_novo_usuario").click(function () {

        $('#btn_editar_usuario').hide();
        $('#btn_salvar_usuario').show();

        $("#usuario_modal").modal("toggle");
    });


    //    $('#btn_recupera_senha').click(function () {
    //       
    //        UsuarioController.recuperarEmail({
    //            postdata: mapping('-user'),
    //            success: function (response, textStatus, jqXHR) {

    //                if (response.Error == true) {

    //                    notify.notice('Alerta!', response.Message, 5000);
    //                    that.attr('disabled', false);
    //                } else {
    //                    notify.success('Alerta!', response.Message, 5000);
    //                }
    //            },
    //            error: function (jqXHR, textStatus, errorThrown) {
    //                notify.error('Falha ao Enviar o Email...', 'Não foi possível enviar!<br/>Erro: ' + errorThrown, 10000);
    //            },

    //            complete: function () {
    //                that.attr('disabled', false);
    //            }

    //        });

    //    });





    $('#usuario_modal').modal({
        backdrop: true,
        keyboard: false,
        show: false
    }).on('hidden', function () {
//        formState.reset('usuario');
        $('#tabela_usuario').trigger('reloadGrid');
    }).on('shown', function () {
        $('#usuario_nome').focus();
    });

    $('#btn_salvar_usuario, #btn_apagar_usuario, #btn_editar_usuario').click(function () {

        var that = $("#btn_salvar_usuario, #btn_apagar_usuario, #btn_editar_usuario");

        var action = $(this).val();

        if (action === 'salvar') {

            if (!validation.validate('salvar')) {
                return false;
            }
            that.attr('disabled', true);
            UsuarioController.salvarUsuario({
                postdata: mapping('-user'),
                success: function (response, textStatus, jqXHR) {
                    if (response.Error == true) {
                        notify.notice('Alerta!', response.Message, 5000);
                    } else {
                        $('#tabela_usuario').trigger('reloadGrid');
                        notify.success('Salvo!', 'Usuário salvo com sucesso!', 5000);
                        that.attr('disabled', false);
                        if (!$('#manter_dados').is(':checked')) {
                            $('form', '#usuario_modal')[0].reset();
                        }
                    }
                },
                error: function (jqXHR, textStatus, errorThrown) {
                    notify.error('Falha detectada...', 'Não foi possível salvar o registro!<br/>Erro: ' + errorThrown, 10000);
                },

                complete: function () {
                    that.attr('disabled', false);
                }

            });

        } else if (action === 'apagar') {

            if ($('#usuario_id').val() == 0) {
                notify.notice('Nenhum registro Selecionado!', 'É preciso que haja um registro selecionado para ser apagado!', 5000);
                that.attr('disabled', false);
                return false;
            }

            $('#usuario_status').val('I');

            UsuarioController.ApagarUsuario({
                postdata: mapping('-user'),
                success: function (response, textStatus, jqXHR) {
                    if (response.Error == true) {
                        notify.notice('Alerta!', response.Message, 5000);
                    } else {
                        $('#tabela_usuario').trigger('reloadGrid');
                        $('#usuario_modal').modal('toggle');
                        notify.success('Apagado!', 'Registro deletado com sucesso!', 5000);
                        that.attr('disabled', false);
                    }
                },
                error: function (jqXHR, textStatus, errorThrown) {
                    notify.error('Falha no Apagamento...', 'Não foi possível apagar o registro!<br/>Erro: ' + errorThrown, 10000);
                },
                complete: function () {
                    that.attr('disabled', false);
                }
            });

        } else if (action === 'editar') {

            UsuarioController.UpdateUsuario({
                postdata: mapping('-user'),
                success: function (response, textStatus, jqXHR) {
                    if (response.Error == true) {
                        notify.notice('Alerta!', response.Message, 5000);
                    } else {
                        $('#tabela_usuario').trigger('reloadGrid');
                        $('#usuario_modal').modal('toggle');
                        notify.success('Alterado!', 'Registro alterado com sucesso!', 5000);
                        that.attr('disabled', false);
                    }
                },
                error: function (jqXHR, textStatus, errorThrown) {
                    notify.error('Falha na edição...', 'Não foi possível editar o registro!<br/>Erro: ' + errorThrown, 10000);
                },
                complete: function () {
                    that.attr('disabled', false);
                }
            });
        }
    });



});


function fillForm(id, data) {

    $('#usuario_id').val(id);
    $('#usuario_nm_completo').val(data['Nome']);
    $('#usuario_login').val(data['Login']);
    $('#usuario_email').val(data['Email']);
    $('#usuario_senha').val(data['Senha']);
    $('#tipousuario_id').val(data['Tipo']);
    $('#txtDataCadastro').val(data['Data de Cadastro']);

    $('#btn_editar_usuario').hide();
    $('#btn_salvar_usuario').show();

    $('#usuario_modal').modal('toggle');
}